﻿Imports System.Data.Common

Public Class UnidadMedida

    Public idUndMed, descripcion As String
    Public fraccion As Char

    Public Shared Function exisUndMed(ByRef undMed As UnidadMedida) As Boolean
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from UNIDAD_MEDIDA where ID_UNIDAD_MEDIDA=@ID_UNIDAD_MEDIDA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, undMed.idUndMed, "ID_UNIDAD_MEDIDA"))
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If

        If dtConsulta.Rows.Count <= 0 Then
            Return False
        Else
            Return True
        End If
    End Function

    Public Shared Function Nuevo(ByRef uniMed As UnidadMedida) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "INSERT INTO UNIDAD_MEDIDA(ID_UNIDAD_MEDIDA,DESCRIPCION,FRACCION) VALUES (@ID_UNIDAD_MEDIDA,@DESCRIPCION,@FRACCION)"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.idUndMed, "ID_UNIDAD_MEDIDA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.descripcion, "DESCRIPCION"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.fraccion, "FRACCION"))
            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function Actualizar(ByRef uniMed As UnidadMedida) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            sentencia = "UPDATE UNIDAD_MEDIDA " + _
                        "SET DESCRIPCION=@DESCRIPCION,FRACCION=@FRACCION " + _
                        "WHERE ID_UNIDAD_MEDIDA=@ID_UNIDAD_MEDIDA"
            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.idUndMed, "ID_UNIDAD_MEDIDA"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.descripcion, "DESCRIPCION"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, uniMed.fraccion, "FRACCION"))
            oResultado.ExisteError = conexion.EjecutarSql(sentencia)
            oResultado.FilasAfectadas = conexion.NumFilasAfectadas
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

    Public Shared Function ConsultarAll() As DataTable
        Dim conexion As New ConexionBD.ConexionBD()
        Dim dtConsulta As New DataTable
        If conexion.Conectar() Then
            Dim sentencia As String
            sentencia = "select * from UNIDAD_MEDIDA"
            dtConsulta = conexion.Consulta(sentencia)
            conexion.Desconectar()
        End If
        Return dtConsulta
    End Function

    Public Shared Function Eliminar(undMed As UnidadMedida) As Resultado
        Dim conexion As New ConexionBD.ConexionBD()
        Dim oResultado As New Resultado
        oResultado.ExisteError = conexion.Conectar()
        If oResultado.ExisteError Then
            Dim sentencia As String
            Dim ok As Boolean = False
            sentencia = "SP_UNDMED_D"

            conexion.ParametroEntrada = New List(Of DbParameter)
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamInString(conexion, undMed.idUndMed, "ID_UNIDAD_MEDIDA"))

            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutChar(conexion, "", "P_ERROR"))
            conexion.ParametroEntrada.Add(ConexionBD.ConexionBD.ParamOutString(conexion, "", "P_MENSAJE"))

            ok = conexion.EjecutarProcedimiento(sentencia)
            oResultado.ExisteError = conexion.ExisteError
            oResultado.Mensaje = conexion.mensaje
            conexion.Desconectar()
        End If
        Return oResultado
    End Function

End Class
